using System;
using System.Collections.Generic;

using AplicacionTest.DataType;
using AplicacionTest.DataAccess;

namespace AplicacionTest.BussinessLogic
{
    public class ProyectoLogic
    {
        #region Variables

        private ProyectoData _proyectoData;

        #endregion

        #region Constructores

        public ProyectoLogic()
        {
            _proyectoData = new ProyectoData();
        }

        #endregion

        #region Metodos

        public ProyectoType CargarPorId(string id)
        {
            _proyectoData.FiltrarPorId(id);

            return _proyectoData.Cargar();
        }

        public void Grabar(ProyectoType proyecto)
        {
            _proyectoData.Grabar(proyecto);
        }

        public ProyectoType GrabarProyecto(ProyectoType proyecto)
        {
            _proyectoData.Grabar(proyecto);

            return this.CargarPorId(proyecto.Id);
        }

        public void Eliminar(string id)
        {
            _proyectoData.Eliminar(id);
        }

        public List<ProyectoType> CargarExplorador()
        {
            return _proyectoData.CargarListaVista();
        }

        public List<ProyectoType> CargarExploradorPaginado(ProyectoType registroBusqueda, int paginaActual,int cantidadMostrar,string orderBy)
        {
            if (registroBusqueda.Nombre != "") _proyectoData.FiltrarPorNombre(registroBusqueda.Nombre);
            if (registroBusqueda.Descripcion != "") _proyectoData.FiltrarPorDescripcion(registroBusqueda.Descripcion);
            if (registroBusqueda.FechaRegistro != "") _proyectoData.FiltrarPorFechaRegistro(registroBusqueda.FechaRegistro);
            if (registroBusqueda.Prioridad != "") _proyectoData.FiltrarPorPrioridad(registroBusqueda.Prioridad);
            if (registroBusqueda.Severidad != "") _proyectoData.FiltrarPorSeveridad(registroBusqueda.Severidad);

            if (paginaActual == 0)
                return _proyectoData.CargarListaVista();
            else
                return _proyectoData.CargarListaVista(paginaActual, cantidadMostrar, orderBy);
        }

        #endregion
    }
}
